ORA |
您所在的位置:网站首页 › ORA-00054:resource busy › ORA |
一、故障描述: 在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,或者是增加修改列字段时时,报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired,如下图。按照字面意思,是资源忙,被占用了。处理思路:查到谁在占用资源,并且杀掉占用该资源的会话就可以了。有可能产生的原因有:1.创建索引时会产生的锁 2.dml 语句会产生的锁 3.索引创建时加上关键字 online时产生的锁。解决处理方法:1.等待其他会话释放资源 2.找出占用资源的会话,并删除 3.重启数据库,当然只有第2种比较适用。 pl-sql中报错如图: 解决方法如下:1、用dba权限的用户查看数据库都有哪些锁 SELECT T2.USERNAME,T2.SID,T2.SERIAL#,T2.LOGON_TIMEFROM V$LOCKED_OBJECT T1,V$SESSION T2WHERE T1.SESSION_ID=T2.SID ORDER BY T2.LOGON_TIME; 如:testuser 339 13545 2009-3-5 17:40:05知道被锁的用户testuser,sid为339,serial#为13545 2、根据sid查看具体的sql语句,如果sql不重要可以跳过,直接kill SELECT SQL_TEXT FROM V$SESSION A,V$SQLTEXT_WITH_NEWLINES BWHERE DECODE(A.SQL_HASH_VALUE, 0, PREV_HASH_VALUE, SQL_HASH_VALUE)=B.HASH_VALUEAND A.SID=&SID ORDER BY PIECE; 查出来的sql,如: BEGIN :ID := SYS.DBMS_TRANSACTION.LOCAL_TRANSACTION_ID; END; 3、kill该事务(释放锁)ALTER SYSTEM KILL SESSION '339,13545'; 4、这样就可以执行其他的事务sql语句了 如给表加一列: ALTER TABLE TEST ADD ORG_NAME VARCHAR2(50) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |